package com.yuandian.customer.perception.service;

import com.yuandian.api.customer_perception.po.*;
import com.yuandian.api.customer_perception.vo.ImportanceOperator;
import com.yuandian.api.customer_perception.vo.LastAlarmVo;
import com.yuandian.api.customer_perception.vo.SearchOptionVo;
import com.yuandian.bpm.common.core.util.R;
import com.yuandian.utils.PageDataInfo;

import java.text.ParseException;
import java.util.List;
import java.util.Map;

/**
 * 重点用户
 *
 * @author wangpeiyang
 * @date 2021/5/17 17:51
 **/
public interface IImportanceOperatorService {


    /**
     * 重点用户-最新告警
     */
	LastAlarmVo queryLastAlarm(LastAlarmParams params);

    /**
     * 重点用户-业务系统健康度
     */
	R<Object> queryBusinessHealthRate(BusinessHealthRateParams params);

    /**
     * 重点用户-告警趋势
     */
	R<Object> queryAlarmTrendList(AlarmTrendParams params);

    /**
     * 重点用户-告警统计
     */
	R<PageDataInfo> queryAlarmList(AlarmParams params);

	/**
	 * 查询重点用户列表
	 * @param params
	 * @return
	 */
	R<PageDataInfo> findByPager(ImportanceOperatorParams params);

    /**
     * 实时告警姓名下拉框接口
     * @return 实时告警重点用户姓名数据
     */
    List<SearchOptionVo> operatorNameSearchOption();

    /**
     * 实时告警用户名下拉框接口
     * @return 实时告警用户名下拉框接口
     */
    List<SearchOptionVo> operatorIdSearchOption();


    /**
     * 重点用户实时使用情况列表
     *
     * @param systemId 系统Id
     * @return
     */
    R<Object> importanceOperatorRealTimeUsage(Integer systemId);

    /**
     * 用户操作轨迹
     */
    R<Object> operateTrajectory(OperateTrajectoryParams params);

    /**
     * 查询用户所有操作轨迹
     *
     * @param params 参数
     * @return 查询用户所有操作轨迹
     */
    R<Object> operateAllTrajectory(OperateTrajectoryParams params) throws ParseException;

    /**
     * 查看重点用户集合
     *
     * @return
     */
	List<ImportanceOperator> queryImportanceOperatorList();

    /**
     * 获取重点用户Map集合
     *
     * @return
     */
	Map<String, ImportanceOperator> getImportanceOperatorMap(List<ImportanceOperator> list);

    /**
     * 获取重点用户Id集合
     *
     * @param list
     * @return
     */
	List<String> getImportanceOperatorIds(List<ImportanceOperator> list);

    /**
     * 查询用户当天操作的业务code
     *
     * @param systemId 系统id
     * @param id       用户id
     * @return
     */
    R<Object> getBusinessByOperatorId(Integer systemId, String id);
}
